package com.example.demo.suanfa_jiegou;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @program: java_base
 * @description: 使用单端队列，实现栈功能
 * @author: zhouhongtao
 * @happyCreateTime: 2022/03/07 16:42
 */
public class StackUseQueueDemo {
    /**
     * 因为双端队列可以自由的 控制头尾结构！顾此题使用单端队列实现栈结构！
     * 队列：只能从尾进入元素   从头出元素
     *
     */
    public static class TwoQueueStack<T> {
        public Queue<T> queue;
        public Queue<T> help;

        public TwoQueueStack() {
            queue = new LinkedList<>();
            help = new LinkedList<>();
        }

        public void push(T value) {
            queue.offer(value);
        }

        public T poll(){
            while (queue.size()>1){
                help.offer(queue.poll());
            }
            T ans = queue.poll();
            Queue<T> tmp = help;
            queue = help;
            help = tmp;
            return ans;
        }



    }





}
